package net.oxygen.upload.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;
import org.springframework.web.servlet.config.annotation.CorsRegistry;

@Configuration
public class CustomCorsConfiguration {

        // 导入Cors的过滤器,在配置文件中进行配置
        @Bean
        public CorsFilter corsFilter(){

            // 初始化cors配置对象
            CorsConfiguration configuration = new CorsConfiguration();

            // 设置允许跨域的域名,如果允许携带cookie的话,路径就不能写*号, *表示所有的域名都可以跨域访问
            configuration.addAllowedOrigin("*");
            // 设置跨域访问可以携带cookie
            configuration.setAllowCredentials(true);
            // 允许所有的请求方法 ==> GET POST PUT Delete
            configuration.addAllowedMethod("*");
            // 允许携带任何头信息
            configuration.addAllowedHeader("*");

            // 初始化cors配置源对象
            UrlBasedCorsConfigurationSource configurationSource = new UrlBasedCorsConfigurationSource();

            // 给配置源对象设置过滤的参数
            // 参数一: 过滤的路径 == > 所有的路径都要求校验是否跨域
            // 参数二: 配置类
            configurationSource.registerCorsConfiguration("/**", configuration);

            // 返回配置好的过滤器
            return new CorsFilter(configurationSource);
        }


}
